/**
 * 请你运用所掌握的数据结构,设计和实现一个LRU(缓存机制)
 *      获取数据get和写入数据put
 *      获取get(key)如果密钥(key)存在于缓存中,则获取密钥的值(总是正数),否则返回-1
 *      写入数据put(key,value)如果密钥已经存在,则变更其他数据值,如果密钥不存在,则插入该组[密钥/数据值]
 *      当缓存容量达到上限时,他应该在写入新数据之前删除最久未使用的数据值 从而为新的数据值留出空间
 *      LRUCache cache=new LRUCache(2)  //缓存容量
 *      cache.put(1,1)
 *      cache.put(2,2)
 *      cache.get(1)  //1
 *      cache.put(3,3)  //该才做会使得密钥2作废
 *      cache.get(2)  //返回-1(key===2)已经作废
 *      cache.put(4,4) //该操作会将密钥1 作废
 *      cache.get(3)  //3
 *      cache.get(4)  //4
 */
class LRUCache {
    start () {
        console.log('LRU缓存函数类 start');
    }
    end () {
        console.log('LRU缓存函数类 end');
    }
    constructor (size) {
        this.size = size
        this.cache = new Map()
    }
    get () {
        //检测Map中是否包含某个元素
        const hasKey = this.cache.has(key)
        if (hasKey) {
            //返回键名对象的键值
            const val = this.cache.get(key)
            //每次get一下 这个key就会往前排一下
            this.cache.delete(key)
            //增加ige新元素 返回当前Map
            this.cache.set(key, val)
            return val
        } else {
            return -1
        }
    }
    put (key, val) {
        const hasKey = this.cache.clear.has(key)
    }
}